package com.zhuyi.broadcast.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuyi.broadcast.pojo.domain.Element;
import com.zhuyi.broadcast.pojo.domain.ElementResourceRelation;
import com.zhuyi.broadcast.pojo.domain.ProgramElementRelation;
import com.zhuyi.broadcast.pojo.domain.Resource;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  元素类
 * </p>
 *
 * @author dyj
 * @since 2024-12-12
 */

public interface ElementService extends IService<Element> {


    /**
     * 添加资源到元素中
     */
    boolean addResourceToElement(Long elementId, Long resourceId);

    /**
     * 删除资源（从元素中剔除）
     */
    boolean removeResourceFromElement(Long elementId, Long resourceId);

    /**
     * 更新资源
     */
    boolean updateResource(Long elementId, Long resourceId, String config);

    /**
     * 查询元素（列表）
     */
    List<Element> selectAvailableElements(Element element);

    /**
     * 查询元素（节目中列表）
     */
    List<ProgramElementRelation> getElementsListByProgramId(Long programId);

    /**
     * 查询元素（节目中单个）
     */
    ProgramElementRelation getElementByProgramId(Long programId,Long elementid);

    /**
     * 添加元素到节目
     */
    boolean addElementToProgram(Long programId, Long elementId);

    /**
     * 查询资源（元素中列表）
     */
    List<ElementResourceRelation> getResourcesListByElementId(Long elementId);

    /**
     * 删除元素（仅从当前节目中删除，不删除资源本身）
     */
    boolean removeElementFromProgram(Long programId, Long elementId);

    /**
     * 更新元素（节目中）
     */
    boolean updateElement(Long programId, Long elementId, Map<String, String> params);

    /**
     * 保存元素
     */
    boolean saveElement(Long elementId);

    /**
     * 删除元素
     */
    boolean removeElement(Long elementId);
//
//    /**
//     * 添加元素到列表
//     */
//    boolean addElement(String elementName);

    void delete_ele(Long elementId);
}
